#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.