#include <initializer_list>
#include <iostream>
using namespace std;
struct Test{
Test(initializer_list<char> list){
cout << "IL constructor" << endl;
}
Test(int a, char c){
cout << "general constructor" << endl;
}
};
template<char c, int i>
void fun(){
/*
8.5.4/7:
A narrowing conversion is an implicit conversion […] from an integer
type or unscoped enumeration type to an integer type that cannot
represent all the values of the original type, except where the source
is a constant expression and the actual value after conversion will
fit into the target type and will produce the original value when
converted back to the original type.
*/
Test{i, c}; // print: IL constructor
}
int main(){
fun<'^', 3>();
Test('^', 4); // print: general constructor
}
Aug 20, 2015
[C++11/14] constant expression value can convert to smaller size data structure
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.